Skip to content

feat(toolpath-desktop): menu-bar Quick View for live agent activity#50

Merged
eliothedeman merged 1 commit intomainfrom
eliot/happy-roentgen-cafbff
Apr 23, 2026
Merged

feat(toolpath-desktop): menu-bar Quick View for live agent activity#50
eliothedeman merged 1 commit intomainfrom
eliot/happy-roentgen-cafbff

Conversation

@eliothedeman
Copy link
Copy Markdown
Collaborator

Summary

  • Adds a macOS tray icon to toolpath-desktop that shows live activity across all five agent-conversation providers (toolpath-claude, -gemini, -codex, -opencode, -pi). A background thread polls every 30s, classifies sessions as active (last activity <2 min) or recent (<24h), and updates the tray title with a count.
  • Left-clicking the tray opens a small popover window listing recent sessions. Clicking a claude or pi session derives its trace via the existing derive_* IPC commands and opens it in the main window's preview route, via a trace:opened event. Rows for gemini/codex/opencode show for activity tracking but are disabled until their desktop-side derive commands land.
  • The popover has an "Open Toolpath" button that shows + focuses the main window. The tray menu has Open / Refresh now / Quit.

Implementation notes

  • New src/tray.rs owns the tray icon, menu, poller thread, and three IPC commands: tray_stats_now, tray_open_main, tray_open_trace.
  • New popover window uses a second Vite entry (popover.htmlsrc/popover.tsroutes/Popover.svelte); vite.config.ts grows a second rollup input.
  • Adds tauri-plugin-positioner (for anchoring the popover to the tray) and toolpath-gemini/-codex/-opencode deps (for the stats poller).
  • The app stays a normal Dock-icon GUI app — ActivationPolicy::Accessory was tried and reverted because macOS tiling window managers (yabai, Amethyst) stop managing accessory windows. The tray is a secondary surface, like Slack/Linear.

Test plan

  • cargo test -p toolpath-desktop — 17/17 pass (two existing + four new for bucket logic, stats smoke, basename slug, session-id truncation)
  • cargo clippy -p toolpath-desktop --tests -- -D warnings
  • bun run check in frontend/ — 0 errors (4 pre-existing warnings in unrelated files)
  • bun run build — produces both index.html and popover.html bundles
  • Manual: cargo tauri dev, verify tray appears, popover opens on left-click, activity counts update, clicking a claude/pi session opens the preview
  • Manual: verify main window is still tiled by the user's window manager (yabai/Amethyst)

Adds a macOS tray icon alongside the existing Dock-icon app. A background
thread polls every 30s across toolpath-claude, -gemini, -codex, -opencode,
and -pi, classifies sessions as active (<2min) or recent (<24h), and
updates the tray title with a live activity count.

Left-clicking the tray opens a small popover window (new Vite entry:
popover.html) listing recent sessions across all five providers. Clicking
a claude or pi session derives the trace via the existing derive_* IPC
commands and surfaces it directly in the main window's preview route via
a trace:opened event. Rows for gemini/codex/opencode show up for activity
tracking but are disabled until their desktop-side derive commands land.

The popover also has an "Open Toolpath" button that simply shows + focuses
the main window.
@github-actions
Copy link
Copy Markdown

🔍 Preview deployed: https://8786e645.toolpath.pages.dev

@eliothedeman eliothedeman merged commit 76a227d into main Apr 23, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant